package com.suning.sawp.intf.dao.task;

import java.util.Date;
import java.util.List;
import java.util.Set;

import com.suning.sawp.dto.mainpush.TaskCommStatistic;
import com.suning.sawp.dto.mainpush.TaskNoDto;
import com.suning.sawp.dto.mainpush.TaskStoreTempDto;
import com.suning.sawp.dto.task.StoreManTask;
import com.suning.sawp.po.task.TaskClerk;

public interface TaskStoreAndClerkDaoService {
    /**
     * 
     * 功能描述: 查询月份门店所属进行中主推任务<br>
     * 〈功能详细描述〉
     *
     * @param storeCode
     * @param categoryCodes 品类编码集合
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    List<StoreManTask> queryProcessingStoreTasks(String storeCode, Set<String> categoryCodes);
    
    /**
     * 
     * 功能描述: 查询店员当前进行中主推任务<br>
     * 〈功能详细描述〉
     *
     * @param staffId
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    List<TaskClerk> queryProcessingStaffTasks(String staffId);
    
    /**
     * 
     * 功能描述: 根据店员主推任务任务编号查询总部任务编号<br>
     * 〈功能详细描述〉
     *
     * @param taskNos
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    List<TaskNoDto> queryHqTaskNosByClerk(Set<Long> taskNos);
    
    /**
     * 
     * 功能描述: 查询店员主推任务BI统计情况<br>
     * 〈功能详细描述〉
     *
     * @param staffId
     * @param taskNos
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    List<StoreManTask> queryBiClerkMainpushTasks(String staffId, String storeCode, List<Long> taskNos);
    
    /**
     * 
     * 功能描述: 查询店员主推任务下未删除的商品编码<br>
     * 〈功能详细描述〉
     *
     * @param taskNo
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    TaskCommStatistic getGoodsCodesInTaskClerk(Long taskNo);
    
    /**
     * 
     * 功能描述: 查询总部任务编号<br>
     * 〈功能详细描述〉
     *
     * @param taskNo
     * @param orgLevel
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    Long queryHqTaskNo(Long taskNo, String orgLevel);
    
    /**
     * 
     * 功能描述: 根据任务编号查询门店主推任务详情<br>
     * 〈功能详细描述〉
     *
     * @param taskNo
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    TaskStoreTempDto queryTaskStoreByTaskNo(Long taskNo);
    
    /**
     * 
     * 功能描述: 根据工号和品类编码查找店员任务<br>
     * 〈功能详细描述〉
     *
     * @param staffId
     * @param categoryCode
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    TaskClerk queryClerkTask(String staffId, String categoryCode);
    
    /**
     * 
     * 功能描述: 根据任务编号查询店员任务<br>
     * 〈功能详细描述〉
     *
     * @param taskNo
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    TaskClerk queryClerkTaskByTaskNo(Long taskNo);
    
    /**
     * 
     * 功能描述: 查询指定时间区间内的大区主推任务商品编码集合<br>
     * 〈功能详细描述〉
     *
     * @param regionCode
     * @param startTime
     * @param endTime
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    List<String> queryCommCdsInRegion(String regionCode, String cateCode, Date startTime, Date endTime);
    
}
